package negocio;

import java.util.Calendar;
import java.util.List;

import negocio.exception.LoginInvalido;
import util.Datas;
import basica.StatusUsuario;
import basica.Usuario;
import generic.DAOFactory;
import idao.IDAOUsuario;

public class UsuarioNegocio {

	private IDAOUsuario usuarioDAO;
	
	public UsuarioNegocio() {
		usuarioDAO = DAOFactory.getUsuarioDAO();
	}
	
	// ==================================================
	// MÉTODOS
	// ==================================================
	
	//EFETUAR LOGIN
	public Usuario efetuarLogin(String login, String senha) throws LoginInvalido{
		Usuario usuario = usuarioDAO.consultarUsuarioPorLoginSenha(login, senha);
		if (usuario == null) {
			throw new LoginInvalido();
		}
		return usuario;
	}
	
	//INCLUIR OU ALTERAR USUÁRIO
	public void inserir(Usuario usuario) {
		Calendar c = Calendar.getInstance();
		c = Datas.converterDateToCalendar(c.getTime());
		
		// Verifica se o usuário já foi cadastrado
		Usuario usuarioJaCadastrado = usuarioDAO.consultarUsuarioPorCpf(usuario.getCpf());
		
		if (usuarioJaCadastrado == null) {
			usuario.setStatusUsuario(StatusUsuario.ATIVO);
			usuario.setDataCadastro(c);
			usuarioDAO.inserir(usuario);
			System.out.println("Usuário cadastrado com sucesso.");
		} else {
			usuario.setDataAtualizacao(c);
			usuarioDAO.alterar(usuario);
			System.out.println("Usuário atualizado com sucesso.");
		}
		
	}
	
	//REMOVER USUÁRIO
	public void remover(Usuario usuario) {
		usuario.setStatusUsuario(StatusUsuario.INATIVO);
		usuarioDAO.remover(usuario);
	}

	//CONSULTAR USUÁRIO POR ID
	public Usuario consultarPorId(Integer codigo) {
		return usuarioDAO.consultarPorId(codigo);
	}
	
	//LISTAR TODOS USUÁRIOS
	public List<Usuario> consultarTodos() {
		return usuarioDAO.consultarTodos();
	}	
}
